x1 <- c(83.0, 88.6, 85.7, 80.8, 83.4, 75.3, 74.5, 79.2, 80.5, 75.7, 
        80.0, 80.6, 82.7, 79.2, 85.5, 78.8, 82.1, 84.5, 79.0, 84.5,68.9, 69.8, 78.5, 76.9, 93.6, 65.5, 78.1, 74.9,
             78.1, 78.7, 85.0, 86.4, 78.5, 68.8, 83.0)

x2 <- c(81.2, 78.3, 75.8, 74.4, 78.4, 79.9, 78.0, 84.4, 86.2, 75.2,
        81.5, 81.8, 81.3, 74.9, 82.1, 79.6, 78.2, 76.9, 77.8, 73.1,81.5, 68.6, 85.2, 86.1, 81.6, 86.8, 65.7, 72.6,
             77.1, 85.4, 60.2, 79.2, 99.0, 62.0, 83.7)

x3 <- c(78.7, 78.8, 84.3, 82.5, 82.6, 87.3, 80.8, 81.5, 76.2, 71.1,
        78.4, 79.3, 79.1, 78.6, 82.8, 80.2, 75.5, 83.5, 81.2, 78.6,78.2, 80.4, 78.4, 86.9, 87.8, 72.4, 83.7, 81.6,
             67.0, 77.7, 68.5, 79.8, 78.3, 82.0, 73.1)

x4 <- c(75.7, 71.0, 75.2, 74.1, 78.2, 89.7, 73.4, 86.0, 64.1, 82.1,
        73.8, 73.8, 82.0, 77.7, 73.4, 79.1, 78.2, 81.2, 84.4, 78.7,80.8, 84.3, 80.3, 94.4, 79.6, 82.6, 93.7, 87.2,
             75.7, 90.7, 71.1, 86.0, 71.4, 77.5, 82.2)

x5 <- c(77.0, 84.2, 81.0, 75.7, 78.9, 81.8, 79.7, 74.5, 80.2, 74.3,
        78.1, 81.7, 79.5, 75.3, 71.7, 80.8, 82.1, 79.2, 81.6, 80.6,81.5, 83.9, 81.7, 83.9, 71.0, 71.4, 93.4, 72.7,
             76.8, 76.7, 82.4, 75.4, 81.8, 76.1, 95.3)



dados <- data.frame(x1,x2,x3,x4,x5)
 dados[,1:5] %>%rowMeans()-> dados$medias
 apply(dados[,1:5] , MARGIN = 1, sd)  -> dados$desvios

a3 <- 1.427
b4 <- 2.089
b3 <- 0
lscs <- b4*mean(dados$desvios[1:20])
lics <- b3*mean(dados$desvios[1:20])
lscx <- mean(dados$media[1:20])+ a3*mean(dados$desvios[1:20])
licx <- mean(dados$media[1:20])- a3*mean(dados$desvios[1:20])
ggplot(data = dados[1:20,],aes(x=medias))+
  geom_histogram(color='lightblue',fill= 'lightblue',)+
  geom_vline(xintercept = licx,linetype='dashed',col= 'darkred')+
  geom_vline(xintercept = lscx,linetype='dashed',col= 'darkred')+
  theme_light()+
  labs(title='histograma das médias',y= 'frequências', x= 'médias')
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

ggplot(data = dados[1:20,],aes(x=medias,y= seq_along(medias)))+
  geom_point(shape=21,size= 3,color= 'blue',fill='lightblue')+
  theme_light()+
  labs(title = 'gráfico de dispersão das médias',x='médias', y= 'amostra')

 fg1 <- ggplot(data = dados[1:20,],aes(x=seq_along(medias),y=medias))+
  geom_line()+
  geom_point()+
  geom_hline(yintercept = lscx,linetype= 'dashed', color= 'red')+
  geom_hline(yintercept = licx,linetype= 'dashed', color= 'red')+
  geom_hline(yintercept = mean(dados$medias),color= 'darkblue')+
  labs(title = 'gráfico de controle para as médias', x= 'amostra', y = 'média')+ 
  theme_light()
  
  ggplotly(fg1)
fg2 <- ggplot(data = dados[1:20,],aes(x=seq_along(desvios),y=desvios))+
  geom_line()+
  geom_point()+
  geom_hline(yintercept = lscs,linetype= 'dashed', color= 'red')+
  geom_hline(yintercept = lics,linetype= 'dashed', color= 'red')+
  geom_hline(yintercept = mean(dados$desvios[1:20]),color= 'darkblue')+
  labs(title = 'gráfico de controle para os desvios', x= 'amostra', y = 'desvios')+ 
  theme_light()
  
   

  
 ggplotly(fg2)
fg3 <- ggplot(data = dados,aes(x=seq_along(medias),y=medias))+
  geom_line()+
  geom_point()+
  geom_hline(yintercept = lscx,linetype= 'dashed', color= 'red')+
  geom_hline(yintercept = licx,linetype= 'dashed', color= 'red')+
  geom_hline(yintercept = mean(dados$medias[1:20]),color= 'darkblue')+
  labs(title = 'gráfico de controle para as médias com os mesmos limites', x= 'amostra', y = 'média')+ 
  theme_light()
  
  
   

  
 ggplotly(fg3)
fg4 <- ggplot(data = dados,aes(x=seq_along(desvios),y=desvios))+
  geom_line()+
  geom_point()+
  geom_hline(yintercept = lscs,linetype= 'dashed', color= 'red')+
  geom_hline(yintercept = lics,linetype= 'dashed', color= 'red')+
  geom_hline(yintercept = mean(dados$desvios[1:20]),color= 'darkblue')+
  labs(title = 'gráfico de controle para os desvios com os mesmos limites', x= 'amostra', y = 'desvios')+ 
  theme_light()
  
   

  
 ggplotly(fg4)
lscs <- b4*mean(dados$desvios)
lics <- b3*mean(dados$desvios)
lscx <- mean(dados$media)+ a3*mean(dados$desvios)
licx <- mean(dados$media)- a3*mean(dados$desvios)

 fg5 <- ggplot(data = dados,aes(x=seq_along(medias),y=medias))+
  geom_line()+
  geom_point()+
  geom_hline(yintercept = lscx,linetype= 'dashed', color= 'red')+
  geom_hline(yintercept = licx,linetype= 'dashed', color= 'red')+
  geom_hline(yintercept = mean(dados$medias),color= 'darkblue')+
  labs(title = 'gráfico de controle para as médias com os limites recalculados', x= 'amostra', y = 'média')+ 
  theme_light()
  
  
   

  
 ggplotly(fg5)
fg6 <- ggplot(data = dados,aes(x=seq_along(desvios),y=desvios))+
  geom_line()+
  geom_point()+
  geom_hline(yintercept = lscs,linetype= 'dashed', color= 'red')+
  geom_hline(yintercept = lics,linetype= 'dashed', color= 'red')+
  geom_hline(yintercept = mean(dados$desvios),color= 'darkblue')+
  labs(title = 'gráfico de controle para os desvios com os limites recalculados', x= 'amostra', y = 'desvios')+ 
  theme_light()
  
   

  
 ggplotly(fg6)
qcc(dados[1:20,1:5],type = 'xbar',std.dev = 'UWAVE-SD', title= 'grafico de controle da média',xlab= 'amostra',ylab= 'Médias')

## List of 11
##  $ call      : language qcc(data = dados[1:20, 1:5], type = "xbar", std.dev = "UWAVE-SD", title = "grafico de controle da média",      xl| __truncated__
##  $ type      : chr "xbar"
##  $ data.name : chr "dados[1:20, 1:5]"
##  $ data      : num [1:20, 1:5] 83 88.6 85.7 80.8 83.4 75.3 74.5 79.2 80.5 75.7 ...
##   ..- attr(*, "dimnames")=List of 2
##  $ statistics: Named num [1:20] 79.1 80.2 80.4 77.5 80.3 ...
##   ..- attr(*, "names")= chr [1:20] "1" "2" "3" "4" ...
##  $ sizes     : Named int [1:20] 5 5 5 5 5 5 5 5 5 5 ...
##   ..- attr(*, "names")= chr [1:20] "1" "2" "3" "4" ...
##  $ center    : num 79.3
##  $ std.dev   : num 4.04
##  $ nsigmas   : num 3
##  $ limits    : num [1, 1:2] 73.9 84.7
##   ..- attr(*, "dimnames")=List of 2
##  $ violations:List of 2
##  - attr(*, "class")= chr "qcc"
qcc(dados[1:20,1:5],type = 'xbar',std.dev = 'UWAVE-SD', title= 'grafico de controle da média com os mesmos limites',xlab= 'amostra',ylab= 'Médias',newdata = dados[21:35,1:5])

## List of 15
##  $ call        : language qcc(data = dados[1:20, 1:5], type = "xbar", std.dev = "UWAVE-SD", newdata = dados[21:35,      1:5], title = "graf| __truncated__ ...
##  $ type        : chr "xbar"
##  $ data.name   : chr "dados[1:20, 1:5]"
##  $ data        : num [1:20, 1:5] 83 88.6 85.7 80.8 83.4 75.3 74.5 79.2 80.5 75.7 ...
##   ..- attr(*, "dimnames")=List of 2
##  $ statistics  : Named num [1:20] 79.1 80.2 80.4 77.5 80.3 ...
##   ..- attr(*, "names")= chr [1:20] "1" "2" "3" "4" ...
##  $ sizes       : Named int [1:20] 5 5 5 5 5 5 5 5 5 5 ...
##   ..- attr(*, "names")= chr [1:20] "1" "2" "3" "4" ...
##  $ center      : num 79.3
##  $ std.dev     : num 4.04
##  $ newstats    : Named num [1:15] 78.2 77.4 80.8 85.6 82.7 ...
##   ..- attr(*, "names")= chr [1:15] "21" "22" "23" "24" ...
##  $ newdata     : num [1:15, 1:5] 68.9 69.8 78.5 76.9 93.6 65.5 78.1 74.9 78.1 78.7 ...
##   ..- attr(*, "dimnames")=List of 2
##  $ newsizes    : Named int [1:15] 5 5 5 5 5 5 5 5 5 5 ...
##   ..- attr(*, "names")= chr [1:15] "21" "22" "23" "24" ...
##  $ newdata.name: chr "dados[21:35, 1:5]"
##  $ nsigmas     : num 3
##  $ limits      : num [1, 1:2] 73.9 84.7
##   ..- attr(*, "dimnames")=List of 2
##  $ violations  :List of 2
##  - attr(*, "class")= chr "qcc"
qcc(dados[1:20,1:5],type = 'S', title= 'grafico de controle dos desvios',xlab= 'amostra',ylab= 'Desvios')

## List of 11
##  $ call      : language qcc(data = dados[1:20, 1:5], type = "S", title = "grafico de controle dos desvios",      xlab = "amostra", ylab = "Desvios")
##  $ type      : chr "S"
##  $ data.name : chr "dados[1:20, 1:5]"
##  $ data      : num [1:20, 1:5] 83 88.6 85.7 80.8 83.4 75.3 74.5 79.2 80.5 75.7 ...
##   ..- attr(*, "dimnames")=List of 2
##  $ statistics: Named num [1:20] 2.99 6.65 4.79 3.88 2.49 ...
##   ..- attr(*, "names")= chr [1:20] "1" "2" "3" "4" ...
##  $ sizes     : Named int [1:20] 5 5 5 5 5 5 5 5 5 5 ...
##   ..- attr(*, "names")= chr [1:20] "1" "2" "3" "4" ...
##  $ center    : num 3.8
##  $ std.dev   : num 4.04
##  $ nsigmas   : num 3
##  $ limits    : num [1, 1:2] 0 7.93
##   ..- attr(*, "dimnames")=List of 2
##  $ violations:List of 2
##  - attr(*, "class")= chr "qcc"
qcc(dados[1:20,1:5],type = 'S', title= 'grafico de controle dos desvios com os mesmos limites',xlab= 'amostra',ylab= 'Desvios',newdata = dados[21:35,1:5])

## List of 15
##  $ call        : language qcc(data = dados[1:20, 1:5], type = "S", newdata = dados[21:35, 1:5], title = "grafico de controle dos desvios co| __truncated__
##  $ type        : chr "S"
##  $ data.name   : chr "dados[1:20, 1:5]"
##  $ data        : num [1:20, 1:5] 83 88.6 85.7 80.8 83.4 75.3 74.5 79.2 80.5 75.7 ...
##   ..- attr(*, "dimnames")=List of 2
##  $ statistics  : Named num [1:20] 2.99 6.65 4.79 3.88 2.49 ...
##   ..- attr(*, "names")= chr [1:20] "1" "2" "3" "4" ...
##  $ sizes       : Named int [1:20] 5 5 5 5 5 5 5 5 5 5 ...
##   ..- attr(*, "names")= chr [1:20] "1" "2" "3" "4" ...
##  $ center      : num 3.8
##  $ std.dev     : num 4.04
##  $ newstats    : Named num [1:15] 5.36 7.65 2.8 6.28 8.55 ...
##   ..- attr(*, "names")= chr [1:15] "21" "22" "23" "24" ...
##  $ newdata     : num [1:15, 1:5] 68.9 69.8 78.5 76.9 93.6 65.5 78.1 74.9 78.1 78.7 ...
##   ..- attr(*, "dimnames")=List of 2
##  $ newsizes    : Named int [1:15] 5 5 5 5 5 5 5 5 5 5 ...
##   ..- attr(*, "names")= chr [1:15] "21" "22" "23" "24" ...
##  $ newdata.name: chr "dados[21:35, 1:5]"
##  $ nsigmas     : num 3
##  $ limits      : num [1, 1:2] 0 7.93
##   ..- attr(*, "dimnames")=List of 2
##  $ violations  :List of 2
##  - attr(*, "class")= chr "qcc"
qcc(dados[,1:5],type = 'xbar',std.dev = 'UWAVE-SD', title= 'grafico de controle da média com os limites recalculados',xlab= 'amostra',ylab= 'Médias')

## List of 11
##  $ call      : language qcc(data = dados[, 1:5], type = "xbar", std.dev = "UWAVE-SD", title = "grafico de controle da média com os limite| __truncated__
##  $ type      : chr "xbar"
##  $ data.name : chr "dados[, 1:5]"
##  $ data      : num [1:35, 1:5] 83 88.6 85.7 80.8 83.4 75.3 74.5 79.2 80.5 75.7 ...
##   ..- attr(*, "dimnames")=List of 2
##  $ statistics: Named num [1:35] 79.1 80.2 80.4 77.5 80.3 ...
##   ..- attr(*, "names")= chr [1:35] "1" "2" "3" "4" ...
##  $ sizes     : int [1:35] 5 5 5 5 5 5 5 5 5 5 ...
##  $ center    : num 79.4
##  $ std.dev   : num 5.62
##  $ nsigmas   : num 3
##  $ limits    : num [1, 1:2] 71.8 86.9
##   ..- attr(*, "dimnames")=List of 2
##  $ violations:List of 2
##  - attr(*, "class")= chr "qcc"
qcc(dados[,1:5],type = 'S', title= 'grafico de controle dos desvios com os limites recalculados',xlab= 'amostra',ylab= 'Desvios')

## List of 11
##  $ call      : language qcc(data = dados[, 1:5], type = "S", title = "grafico de controle dos desvios com os limites recalculados",      | __truncated__
##  $ type      : chr "S"
##  $ data.name : chr "dados[, 1:5]"
##  $ data      : num [1:35, 1:5] 83 88.6 85.7 80.8 83.4 75.3 74.5 79.2 80.5 75.7 ...
##   ..- attr(*, "dimnames")=List of 2
##  $ statistics: Named num [1:35] 2.99 6.65 4.79 3.88 2.49 ...
##   ..- attr(*, "names")= chr [1:35] "1" "2" "3" "4" ...
##  $ sizes     : int [1:35] 5 5 5 5 5 5 5 5 5 5 ...
##  $ center    : num 5.29
##  $ std.dev   : num 5.62
##  $ nsigmas   : num 3
##  $ limits    : num [1, 1:2] 0 11
##   ..- attr(*, "dimnames")=List of 2
##  $ violations:List of 2
##  - attr(*, "class")= chr "qcc"